package ar.edu.utn.frsf.tpae.a2014.g03.service;

import java.util.List;

import ar.edu.utn.frsf.tpae.a2014.g03.enums.EstadoPedidoEnum;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Cliente;
import ar.edu.utn.frsf.tpae.a2014.g03.persistence.model.Pedido;
import ar.edu.utn.frsf.tpae.a2014.g03.service.exception.ServiceException;

/**
 * Interfaz que define las operaciones que debe proveer un servicio de
 * pedidos.
 * 
 * @author g03
 */

public interface PedidoService {

	/**
	 * Persiste un pedido realizado por un cliente y actualiza su historial.
	 * 
	 * @param cliente
	 *            @param origen @param destino @param articulo @param peso @param
	 *            volumen @param comentario
	 * 
	 *            Crea un pedido.
	 * 
	 */
	
	public Pedido nuevoPedido(Cliente cliente,String origenes,String destino,String articulo , Double peso , Double volumen , String comentario )throws ServiceException;
	
	/**
	 * Actualiza un pedido realizado por un cliente y actualiza su historial.
	 * 
	 * @param pedido
	 * @return
	 */
	public Pedido update(Pedido pedido, EstadoPedidoEnum estado,
			String comentario) throws ServiceException;

	/**
	 * Obtiene los pedidos que no fueron asignados a transportistas
	 * 
	 * @return
	 */
	public List<Pedido> findPedidosSinAsignar() throws ServiceException;

}
